@import 'mixins_and_variables_and_functions';

/* Login Page */
.login-page {
  .container {
    max-width: 960px;
  }

  .navbar-gitlab .container {
    max-width: none;
  }

  .flash-container {
    margin-bottom: $gl-padding;
    position: relative;
    top: 8px;
  }

  .brand-holder {
    font-size: 18px;
    line-height: 1.5;

    p {
      font-size: 16px;
      color: $login-brand-holder-color;
    }

    h3 {
      font-size: 22px;
    }

    img {
      max-width: 100%;
      margin-bottom: 30px;
    }

    a {
      font-weight: $gl-font-weight-bold;
    }
  }

  p {
    font-size: 13px;
  }

  .signin-text {
    p {
      margin-bottom: 0;
      line-height: 1.5;
    }
  }

  .borderless {
    .login-box,
    .omniauth-container {
      box-shadow: none;
    }
  }

  .g-recaptcha {
    > div {
      margin-left: auto;
      margin-right: auto;
    }
  }

  .login-box,
  .omniauth-container {
    box-shadow: 0 0 0 1px $border-color;
    border-radius: $border-radius;

    .login-heading h3 {
      font-weight: $gl-font-weight-normal;
      line-height: 1.5;
      margin: 0 0 10px;
    }

    .login-footer {
      margin-top: 10px;

      p:last-child {
        margin-bottom: 0;
      }
    }

    a.forgot {
      float: right;
      padding-top: 6px;
    }

    .nav .active a {
      background: transparent;
    }

    // Styles the glowing border of focused input for username async validation
    .login-body {
      font-size: 13px;

      .username .validation-success {
        color: $green-600;
      }

      .username .validation-error {
        color: $red-500;
      }

      .terms .gl-form-checkbox {
        @include gl-reset-font-size;
      }
    }
  }

  .omniauth-container {
    border-radius: $border-radius;
    font-size: 13px;

    p {
      margin: 0;
    }

    form {
      padding: 0;
      border: 0;
      background: none;
    }
  }

  .new-session-tabs {
    &.nav-links-unboxed {
      border-color: transparent;
      box-shadow: none;

      .nav-item {
        border-left: 0;
        border-right: 0;
        border-bottom: 1px solid $gray-100;
        background-color: transparent;
      }
    }

    display: flex;
    box-shadow: 0 0 0 1px $border-color;
    border-top-right-radius: $border-radius-default;
    border-top-left-radius: $border-radius-default;

    // Ldap configurations may need more tabs & the tab labels are user generated (arbitrarily long).
    // These styles prevent this from breaking the layout, and only applied when providers are configured.
    &.custom-provider-tabs {
      flex-wrap: wrap;

      li {
        min-width: 85px;
        flex-basis: auto;

        // This styles tab elements that have wrapped to a second line. We cannot easily predict when this will happen.
        // We are making somewhat of an assumption about the configuration here: that users do not have more than
        // 3 LDAP servers configured (in addition to standard login) and they are not using especially long names for any
        // of them. If either condition is false, this will work as expected. If both are true, there may be a missing border
        // above one of the bottom row elements. If you know a better way, please implement it!
        &:nth-child(n+5) {
          border-top: 1px solid $border-color;
        }
      }

      a {
        font-size: 16px;
      }
    }

    li {
      flex: 1;
      text-align: center;
      border-left: 1px solid $border-color;

      &:first-of-type {
        border-left: 0;
        border-top-left-radius: $border-radius-default;
      }

      &:last-of-type {
        border-top-right-radius: $border-radius-default;
      }

      &:not(.active) {
        background-color: $gray-light;
      }

      a {
        width: 100%;
        font-size: 18px;
      }

      &.active > a {
        cursor: default;
      }
    }
  }

  input[type='submit'] {
    margin-bottom: 0;
    display: block;
    width: 100%;
  }

  .devise-errors {
    h2 {
      margin-top: 0;
      font-size: 14px;
      color: $red-700;
    }
  }

  .omniauth-divider {
    @include omniauth-divider;
  }
}

@include media-breakpoint-down(xs) {
  .login-page {
    .col-md-5.float-right {
      float: none !important;
      margin-bottom: 45px;
    }
  }
}

.html-devise-layout {
  margin: 0;
  padding: 0;
  height: 100%;

  body {
    padding-top: 48px; // Remove this line when the restyle_login_page feature flag is deleted. Instead, add self-align `center` to container, and maybe a top margin.

    &.with-system-header {
      padding-top: $system-header-height;
      padding-top: calc(#{$system-header-height} + 48px); // Remove this line when the restyle_login_page feature flag is deleted
    }

    &.with-system-footer {
      .footer-container {
        padding-bottom: $system-footer-height;
      }
    }
  }
}

@include media-breakpoint-down(sm) {
  .sm-bg-gray {
    @include gl-bg-gray-10;

    .gl-dark & {
      background-color: var(--gray-100);
    }
  }
}
